package netWorkPrograming.tcp.tcp03;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

/**
 * @author yangwenqi
 * @decs TODO
 * @date 2025/5/27
 * 需求3：服务端接收多条消息，服务端也可以发送多条消息；
 * 客户端可以发送多条消息，也可以接收多条消息；（一对一，阻塞的现象）
 */
public class ClientDemo {
    public static void main(String[] args) {
        //socket可以放在这里面吗
        System.out.println("-----------------客户端-------------");
        try(Socket socket = new Socket("localhost", 8888);
            BufferedReader in= new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            Scanner sc = new Scanner(System.in)
            ) {
            while(true){
                //客户端发送消息
                System.out.println("请说：");
                String s=sc.nextLine();
                if(s.equals("exit")){
                    break;
                }
                out.println(s);
                //客户端读消息
                String s2=in.readLine();
                /**
                 * 客户端的 in.readLine()读取到这条消息并打印，但此时流并未关闭，
                 * readLine() 会 继续阻塞等待下一行，而不会跳出循环去执行下一次发送。
                 */
               /* while ((s2=in.readLine())!=null){
                    System.out.println("服务端说："+s2);
                }*/
                System.out.println("服务端说："+s2);
            }
        }catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
